package gui.gestion.forms;

import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

import logica.Controlador;
import objetosNegocio.Familia;
import objetosNegocio.ListaFamilias;
import objetosNegocio.Producto;

public class ProduForm extends JPanel{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextField idProducto;
	private JTextField nombre;
	//private JTextField familia;
	private JComboBox familia;
	private JTextField descripcion;
	private JCheckBox activo;
	
	private Controlador controlador;
	
	/**
	 * Default constructor
	 */
	public ProduForm(Controlador controlador){
		this.controlador=controlador;
		
		buildProduForm();
	}

	/**
	 * Builds the form
	 */
	private void buildProduForm() {
		this.setBorder(new TitledBorder("Producto"));
		this.setLayout(new GridLayout(5,2));
		this.setMinimumSize(new Dimension(350,200));
		this.setPreferredSize(new Dimension(350,200));
		
		JLabel l = new JLabel("ID", JLabel.TRAILING);
        this.add(l);
        idProducto = new JTextField(10);
        idProducto.setEditable(false); //No debe poder ser modificado
        l.setLabelFor(idProducto);
        this.add(idProducto);
        
		JLabel l2 = new JLabel("Nombre", JLabel.TRAILING);
        this.add(l2);
        nombre = new JTextField(30);
        l2.setLabelFor(nombre);
        this.add(nombre); 
        
        JLabel l3 = new JLabel("Familia", JLabel.TRAILING);
        this.add(l3);
        //familia = new JTextField(30);
        familia =new JComboBox();
        l3.setLabelFor(familia);
        this.add(familia);
		//Cargamos la lista de familias activas en el comboBox
		ListaFamilias listado = controlador.obtenerListadoFamiliasActivas();
		for (int i=0;i<listado.size();i++)
			familia.addItem(listado.get(i));

        
        JLabel l4 = new JLabel("Descripcion", JLabel.TRAILING);
        this.add(l4);
        descripcion = new JTextField(200);
        l4.setLabelFor(descripcion);
        this.add(descripcion);
        
		JLabel l5 = new JLabel("Activo ?", JLabel.TRAILING);
        this.add(l5);
        activo = new JCheckBox();
        l5.setLabelFor(activo);
        this.add(activo);
		
	}
	
	/**
	 * Fills the form with producto info
	 * @param cli
	 */
	public void fillProduForm(Producto pro){
		this.activo.setSelected(pro.getActivo());
		this.descripcion.setText(pro.getDescripcion());
		for (int i=0;i<this.familia.getItemCount();i++){
        	Familia familia =(Familia)this.familia.getItemAt(i);
        	if (pro.getFamilia()==familia.getIdFamilia()) this.familia.setSelectedIndex(i);
        }
		
		//this.familia.setText(Integer.toString(pro.getFamilia()));
		this.idProducto.setText(Integer.toString(pro.getIdProducto()));
		this.nombre.setText(pro.getNombre());
	}
	
	/**
	 * Retrieves a Producto object with the info from the form
	 * @return
	 */
	public Producto getProduObject(){
		Producto ret = new Producto();
		
		try{
			ret.setIdProducto(Integer.parseInt(this.idProducto.getText()));
		}catch (NumberFormatException e){}
		
		if(this.activo.getSelectedObjects() != null)
			ret.setActivo(true);
		else
			ret.setActivo(false);
        ret.setDescripcion(this.descripcion.getText());
        
        Familia familia =(Familia)this.familia.getSelectedItem();
        ret.setFamilia(familia.getIdFamilia());
        //ret.setFamilia(Integer.parseInt(this.familia.getText()));
    	    	
		ret.setNombre(this.nombre.getText());
        return ret;
	}


}
